package com.framework.util;

import java.security.SecureRandom;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

import sun.misc.BASE64Encoder;

/*************************************************************************
 * 版本：         V1.0  
 *
 * 文件名称 ：DES.java 描述说明 ：
 * 
 * 数据加密，算法（DES）
 * 
 * 创建信息 : create by 刘佳佳 on 2015-7-6 上午11:06:05  修订信息 : modify by ( ) on (date) for ( )
 * 
 * 版权信息 : Copyright (c) 2015 扬州北斗软件有限公司
 **************************************************************************/
public class DES {
	 private static final byte[] DES_KEY = {21, 1, -110, 82, -32, -85, -128, -65};
	 
	 
	 /**
	     * 数据加密，算法（DES）
	     * @param data 要进行加密的数据
	     * @return 加密后的数据
	     */
	    public static String encryptBasedDes(String data) {
	        String encryptedData = null;
	        try {
	            // DES算法要求有一个可信任的随机数源
	            SecureRandom sr = new SecureRandom();
	            DESKeySpec deskey = new DESKeySpec(DES_KEY);
	            // 创建一个密匙工厂，然后用它把DESKeySpec转换成一个SecretKey对象
	            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
	            SecretKey key = keyFactory.generateSecret(deskey);
	            // 加密对象
	            Cipher cipher = Cipher.getInstance("DES");
	            cipher.init(Cipher.ENCRYPT_MODE, key, sr);
	            // 加密，并把字节数组编码成字符串
	            encryptedData = new BASE64Encoder().encode(cipher.doFinal(data.getBytes()));
	        } catch (Exception e) {
	            throw new RuntimeException("加密错误，错误信息：", e);
	        }
	        return encryptedData;
	    }
}
